#include <iostream>
#include <string.h>

using std::cout;
using std::endl;

void foreach(int *arr, int idx, int length, int *flag)
{
    if(idx == length){
        for(size_t i{}; i < length; i++){
            if(flag[i])
                printf("%d ", arr[i]);
        }
        printf("\n");
    }else{
        flag[idx] = 1;
        foreach(arr, idx + 1, length, flag);
        flag[idx] = 0;
        foreach(arr, idx + 1, length, flag);
    }

}

void test()
{
    int arr[] = {1, 2, 3};
    int *flag = new int[3];
    // memset(flag, 0, 3);
    int len = sizeof(arr) / sizeof(int);
    foreach(arr, 0, len, flag);
}

int main(int args, char *argv[])
{
    test();
    return 0;
}